package com.ccys.doctor.service;

import com.ccys.common.vo.ResponseResultApp;
import com.ccys.db.dto.doctor.doctorConsultStage.*;
import com.ccys.db.entity.TblBooking;
import com.ccys.db.vo.doctor.doctorConsultStage.*;

import java.text.ParseException;
import java.util.List;

/**
 * @program: WhiteCoat
 * @description: DoctorConsultStage
 * @author: ZhangJingCan
 * @create: 2024-02-24 09:38
 **/
public interface DoctorConsultStageService {
    ResponseResultApp approveMedications(String bookingId);

    ResponseResultApp checkProductAvailableForIndonesia(CheckProductAvailableDto dto);

    ResponseResultApp checkQuantityForAddFavourite(CheckQuantityForAddFavouriteDto dto);

    ResponseResultApp checkQuantityForRepeat(CheckQuantityForAddFavouriteDto dto);

    ResponseResultApp<List<CheckQuantityMedicationInPackageVo>> checkQuantityMedicationInPackage(String packageId);

    ResponseResultApp doctorDeletePrescriptions(DoctorDeletePrescriptionsDto dto);

    ResponseResultApp<GetComboboxUpConsultVo> getComboboxUpConsult(String memberId, Integer pageIndex, Integer pageSize, String condition);

    ResponseResultApp<GetDefaultAddressOfPatientVo> getDefaultAddressOfPatient(String memberId);

    ResponseResultApp<List<GetDiagnosisByCountryVo>> getDiagnosisByCountry(String searchText, String countryId);

    ResponseResultApp<List<GetDiagnosisExclusionVo>> getDiagnosisExclusion(String bookingId);

    ResponseResultApp<List<GetFavouritePrescriptionVo>> getFavouritePrescription();

    ResponseResultApp<List<GetFavouritePresciptionDetailVo>> getFavouritePresciptionDetail(String favouritePrescriptionId);

    ResponseResultApp<UpdateTextTemplateVo> updateTextTemplate(UpdateTextTemplateDto dto);

    ResponseResultApp updateStatusCoveredDiagnosis(UpdateStatusCoveredDiagnosisDto dto);

    ResponseResultApp updatePrescriptionForApproval(UpdatePrescriptionForApprovalDto dto);

    ResponseResultApp updatePrescription(UpdatePrescriptionDto dto);

    ResponseResultApp updateNricFin(UpdateNricFinDto dto);

    ResponseResultApp updateMedicalService(UpdateMedicalServiceDto dto);

    ResponseResultApp updateLocationForIndonesia(UpdateLocationForIndonesiaDto dto);

    ResponseResultApp updateGender(UpdateGenderDto dto);

    ResponseResultApp updateDiagnosis(UpdateDiagnosisDto dto);

    ResponseResultApp updateConSultationNote(UpdateConSultationNoteDto dto);

    ResponseResultApp<UpdateCompositionVo> updateComposition(UpdateCompositionDto dto);

    ResponseResultApp unEnrollCdmp(UnEnrollCdmpDto dto);

    ResponseResultApp submitPHQ4(SubmitPHQ4Dto dto);

    ResponseResultApp startTBTCConsulation(StartTBTCConsulationDto dto) throws ParseException;

    ResponseResultApp showPrescriptionToPatient(ShowPrescriptionToPatientDto dto);

    ResponseResultApp<SendFirstTBTCMessageVo> sendFirstTBTCMessage(SendFirstTBTCMessageDto dto) throws ParseException;

    ResponseResultApp saveLongTerm(SaveLongTermDto dto);

    ResponseResultApp saveDrugAlergy(SaveDrugAlergyDto dto);

    ResponseResultApp replacePrescription(ReplacePrescriptionDto dto);

    ResponseResultApp repeatDiagnosisAndMedication(RepeatDiagnosisAndMedicationDto dto);

    ResponseResultApp requestFileFromPatient(String bookingId);

    ResponseResultApp updateDiagnosisAllowPatientToClaim(UpdateDiagnosisAllowPatientToClaimDto dto);

    ResponseResultApp startConsulation(StartConsulationDto dto) throws ParseException;

    /**
     * 根据状态得到对应的返回errorStr
     *
     * @param bookingStatus booking的状态
     * @return
     */
    String getErrorBookingValid(Integer bookingStatus);

    void UpdateQueueNoAfterConnected(TblBooking booking,Integer deleteFrom);
}
